/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ejbean;

import entities.Usuario;
import java.util.List;
import javax.ejb.Local;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

/**
 *
 * @author Alex
 */
@Stateless(mappedName = "UsuarioBean")
@Local(UsuarioBeanLocal.class)
public class UsuarioBean implements UsuarioBeanLocal {

    @PersistenceContext(unitName = "com.proyectoempresa_ProyectoEmpresa-ejb_ejb_1.0-SNAPSHOTPU")
    private EntityManager em;
    
    @Override
    public List<Usuario> findAll() {
        Query query = em.createNamedQuery("Usuario.findAll");
        
        return (List<Usuario>) query.getResultList();
    }
    @Override
    public List<Usuario> findAllSinSuper(){
        Query query = em.createNamedQuery("Usuario.findAllSinSuper");
        
        return (List<Usuario>) query.getResultList();
    }

    @Override
    public Usuario findByUsuarioId(Integer idUsuario) {
        Usuario res = null;
        Query query = em.createNamedQuery("Usuario.findByUsuarioId").
                setParameter("usuarioId", idUsuario);
        
        try {
            res = (Usuario) query.getSingleResult();
        } catch(NoResultException e) {
        }
        
        return res;
    }

    @Override
    public List<Usuario> findByUsuario(String nombre) {
        Query query = em.createNamedQuery("Usuario.findByUsuario").setParameter("usuario", nombre);
        
        return (List<Usuario>) query.getResultList();
    }

    @Override
    public Usuario findByEmailAndPassword(String usuario, String password) {
        Usuario res = null;
        Query query = em.createNamedQuery("Usuario.findByEmailAndPassword").
                setParameter("email", usuario).
                setParameter("password", password);
        
        try {
            res = (Usuario) query.getSingleResult();
        } catch(NoResultException e) {
        }
        
        return res;
    }

    @Override
    public Usuario findByEmail(String email) {
        Usuario res = null;
        Query query = em.createNamedQuery("Usuario.findByEmail").
                setParameter("email", email);
        
        try {
            res = (Usuario) query.getSingleResult();
        } catch(NoResultException e) {
        }
        
        return res;
    }

    @Override
    public List<Usuario> findByFechaRegistro(String fechaRegistro) {
        Query query = em.createNamedQuery("Usuario.findByFechaRegistro").setParameter("fechaRegistro", fechaRegistro);
        
        return (List<Usuario>) query.getResultList();
    }

    @Override
    public Usuario insert(Usuario usuario) {
        return update(usuario);
    }

    @Override
    public Usuario update(Usuario usuario) {
        return em.merge(usuario);
    }
    
    @Override
    public void remove(Usuario usuario) {
        usuario.setActivo("N");
        em.merge(usuario);
    }

    // Add business logic below. (Right-click in editor and choose
    // "Insert Code > Add Business Method")
    

}
